package upc.dew.inscripcionalumnos.controller.validator;

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import upc.dew.inscripcionalumnos.model.Postulante;

public class FichaValidator implements Validator
{
    public boolean supports(Class clazz)
    {
        return Postulante.class.equals(clazz);
    }

    public void validate(Object target, Errors errors)
    {
        Postulante postulante = (Postulante) target;

        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "numeroDocumento", "datospersonales.dni.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "nacionalidad", "datospersonales.nacionalidad.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "direccion", "datospersonales.direccion.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "telefono", "datospersonales.telefono.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "email", "datospersonales.email.required");

        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empresa", "datoslaborales.empresa.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "area", "datoslaborales.area.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "cargo", "datoslaborales.cargo.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "direccionLaboral", "datoslaborales.direccion.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "telefonoLaboral", "datoslaborales.telefono.required");

        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "instituto", "datosacademicos.instituto.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "carrera", "datosacademicos.carrera.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "direccionAcademica", "datosacademicos.direccion.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "nivelAcademico", "datosacademicos.nivelacademico.required");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "anioEgreso", "datosacademicos.anioegreso.required");

        if(!errors.hasFieldErrors("email"))
        {
            if(postulante.getEmail().indexOf("@") == -1)
            {
                errors.rejectValue("email", "datospersonales.email.invalid");
            }
        }
    }
}